package com.xiaoxie.common.utils;

import com.xiaoxie.common.domain.ExportExcelColumnConfig;
import org.testng.collections.Lists;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class ExportUtils {
    public static List<List<String>> getHeaders(List<ExportExcelColumnConfig> configs) {
        List<List<String>> headers = new ArrayList<>();
        // 对列表头进行排序操作
        configs.sort((o1, o2) -> o1.getSortNo() - o2.getSortNo());
        // 取出每一个列表头的值，并添加到headers中
        for (ExportExcelColumnConfig config : configs) {
            List<String> header = Lists.newArrayList();
            header.add(config.getExcelColumnName());
            headers.add(header);
        }
        return headers;
    }

    public static List<List<Object>> getValues(List<ExportExcelColumnConfig> configs, List<Map<String, Object>> data) {
        List<List<Object>> values = new ArrayList<>();
        // 对列表头进行排序操作
        configs.sort((o1, o2) -> o1.getSortNo() - o2.getSortNo());
        for (Map<String, Object> map : data) {
            List<Object> value = Lists.newArrayList();
            for (ExportExcelColumnConfig config : configs) {
                value.add(map.get(config.getDbColumnName()));
            }
            values.add(value);
        }
        return values;
    }

    public static int[] getHeaderWidth(List<ExportExcelColumnConfig> headers) {
        int[] widths = new int[headers.size()];
        // 对列表头进行排序操作
        headers.sort((o1, o2) -> o1.getSortNo() - o2.getSortNo());
        for (int i = 0; i < headers.size(); i++) {
            widths[i] = headers.get(i).getExcelColumnWidth();
        }
        return widths;
    }
}
